package com.ggqq.day330;

/*两数相加*/
public class AddTwo {
    public static void main(String[] args) {
        ListNode l1 =new ListNode(2,new ListNode(4));
        ListNode l2 =new ListNode(5,new ListNode(6));
        AddTwo addTwo = new AddTwo();
        ListNode listNode = addTwo.addTwoNumbers(l1, l2);
        while(listNode != null){
            System.out.println(listNode.val);
            listNode = listNode.next;
        }

    }
    public ListNode addTwoNumbers(ListNode l1,ListNode l2){
        ListNode pre = new ListNode(0);
        ListNode cur = pre;
        int carry =0;//进位
        while(l1 != null || l2 != null){
            int x = l1==null ? 0 : l1.val;
            int y = l2==null ? 0 : l2.val;
            int sum = x+y+carry;

            carry = sum/10;//进位
            sum = sum%10;//存储，和
            cur.next = new ListNode(sum);

            cur = cur.next;
            if(l1 != null){
                l1 =l1.next;
            }
            if(l2 != null){
                l2 = l2.next;
            }
        }
        if(carry == 1){  //如果最后加完了还有进位，那么在新建一个节点
            cur.next = new ListNode(carry);
        }
        return pre.next;
    }

}
class ListNode{
    int val;
    ListNode next;
    ListNode(){}
    ListNode(int val){
        this.val = val;
    }
    ListNode(int val,ListNode next){
        this.val = val;
        this.next = next;
    }
}
